#ifndef UF_H
#define UF_H
#include "tufpos.h"
#include "bool.h"
#include "tufalpha.h"
#include "tufset.h"

typedef struct sUnion_find * union_find;

/* constructor */
union_find
uf_create(const tufpos max); 

/* agrega singulete */
void
uf_add_singulete(union_find uf, const tufalpha el); 

/* busca conjunto a partir de un elemento que le pertenece */
tufset
uf_find(union_find uf, const tufalpha el); 

/* union de los conjuntos */
void
uf_union(union_find uf, const tufset s1, const tufset s2);

/* hay solo un conjunto? */
Bool
uf_oneset(const union_find uf); 

/* destructor */
union_find
uf_destroy(union_find uf);

#endif
